package com.woniuxy.service.impl;

import com.woniuxy.entity.Menu;
import com.woniuxy.mapper.MenuMapper;
import com.woniuxy.service.MenuService;
import org.springframework.stereotype.Service;

import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;

@Service
public class MenuServiceImpl implements MenuService {
    @Resource
    private MenuMapper menuMapper;

    /**
     * 把数据转换为前端能接受的--一级菜单中包含二级菜单的结构
     *          1.根据用户id查询出所有的一级菜单List<menu>
     *          2.循环父菜单，去所有菜单的集合中找对应的子菜单
     *            2.1根据一级菜单的id查询出所有的二级菜单id=parentId
     *          3.把一级菜单和二级菜单绑定到一起
     * @param userId
     * @return
     */
    @Override
    public List<Menu> queryUserMenu(Integer userId) {
        List<Menu> menus = menuMapper.queryUserMenu(userId);
        //1.根据用户id查询出所有的一级菜单List<menu>
        List<Menu> parentMenu = menus.stream()
                .filter(e -> e.getParentId().equals(-1))
                .collect(Collectors.toList());
        //2.循环父菜单，去所有菜单的集合中找对应的子菜单
        for (Menu pMenu : parentMenu) {
            List<Menu> childrenMenu = new ArrayList<>();
            for (Menu menu : menus) {
                if (pMenu.getId().equals(menu.getParentId())){
                    //证明父菜单的id和子菜单的parentId相等
                    childrenMenu.add(menu);
                }
            }
            pMenu.setChildrenMenu(childrenMenu);
        }
        //2.1根据一级菜单的id查询出所有的二级菜单id=parentId

        return parentMenu;
    }
}
